package main

import (
	"github.com/kataras/golog"
	"path/filepath"
	"sdn-executor/bootstrap"
	"sdn-executor/config"
	"sdn-executor/enviroments"
	"sdn-executor/utils/routines"
)

func main() {
	golog.Infof("start sdn-executor program")
	var err error

	err = bootstrap.InitEnv()
	if err != nil {
		panic(err)
	}

	// 加载配置
	configPath := filepath.Join(enviroments.ExeDir, "../config")
	cfg, err := bootstrap.InitConfig(configPath, "config-default", "config", "yaml")
	if err != nil {
		panic(err)
	}

	// 初始化logger
	w := bootstrap.InitLogger(cfg.Log)
	defer w.Close()

	// 初始化数据库连接
	err = initDBs(cfg)
	if err != nil {
		panic(err)
	}

	// 启动http rest服务器
	err = bootstrap.InitHTTP()
	if err != nil {
		panic(err)
	}

	// 等待退出信号
	routines.WaitExit(-1)

}

// initDBs 初始化所有的数据库连接
func initDBs(cfg *config.Config) error {
	// 初始化executor数据库连接
	err := bootstrap.InitExecutorDB(cfg.ExecDB)
	if err != nil {
		return err
	}

	return nil
}
